package com.example.youBIP.controller;

import com.alibaba.fastjson.JSONObject;
import nccloud.open.api.auto.token.cur.utils.APICurUtils;
import nccloud.open.api.auto.token.factory.APIUtilsFactory;
import nccloud.open.api.auto.token.factory.NCCVersionEnum;
import nccloud.open.api.auto.token.itf.IAPIUtils;

public class YouBIPController {
    // 服务地址ip
    String ip = "218.65.5.101";
    // 服务端口号
    String port = "8082";
    // 账套编码，开发环境使用develop，生产环境需要使用用root账号登录，在“系统管理”节点查看账套编码
    String busi_center = "001";
    // 第三方应用编码
    String app_id = "OA";
    // app_secret，用于请求加签
    String app_secret = "eae2a148bd454394817b";
    // 公钥，加解密使用
    String public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlxiAfl2hxkzInOgehYAGIJOP64PPBZP0F313kAFLfIVGBghO7R+KyiwNlXlP7j2fJ9md0ML6zazMQ4MxhJWlwa+CJAIyY8uBtoo208cxf4v4kglcmn/8ecPPvmDC45/6/Bxt55v+Jpf/qk/55sGchDwssfkEyEycCcyXCKdoj1Z8iWSRWzzIRGiUStTleglg6vAhfTN7xHAl9G1YjapvrZiECYoV4nsV5q9H5C2h7oJuyGCWT51HFJTarqwJJVtzkkYdBRcjImpDqBukKqlqnf8VCZxuElx4eT0cHQ36yT2h9N09ABgN1WHaV4d3fo/r4mxNdPw8n/do+N8kSF9rmQIDAQAB";
    // ncc用户名
    String ncc_user = "seeyon";
    // ncc用户密码
    String password = "001";
    // 公有云租户id
    String tenant_id = null;
    // 加密等级
    String secret_level = "L0";
    // 授权模式，客户端模式为client，密码模式为：password
    String grant_type = "client";

    void test() {
        IAPIUtils util = new APICurUtils();

// 初始化方法1
        util.init(ip, port, busi_center, app_id, app_secret, public_key, ncc_user, password);
// 初始化方法2，tenant_id、secret_level、grant_type这三个参数也可以通过setter注入
// util.init(ip, port, busi_center, app_id, app_secret, public_key, ncc_user, password, tenant_id, secret_level, grant_type);
        try {
            // 获取token
            String token = util.getToken();

            // 请求的OpenAPI接口地址，注意nccloud前面没有"/"
//            String apiuri = "nccloud/api/cmp/applyext/queryBodyMoneyByCon";
//            util.setApiUrl(apiuri);
// 对应接口地址的请求参数
// 请求的OpenAPI接口地址，注意nccloud前面没有"/"
            String apiuri = "nccloud/api/riaorg/org/dept/queryDeptByCode";
            util.setApiUrl(apiuri);
            String requestParam = "{\"code\":[\"BM-RM-01\"],\"version\":\"1\"}";
// 携带token访问接口，获取结果
            String result = util.getAPIRetrun(token, requestParam);
            System.out.println(result);
        } catch (Exception e) {

        }

    }

    public void test2() throws Exception {
        IAPIUtils util = null;
        // 传参版本号或版本枚举获取工具类
        util = APIUtilsFactory.getAPIUtils(NCCVersionEnum.NCC2111);

        // 初始化方法1
        util.init(ip, port, busi_center, app_id, app_secret, public_key, ncc_user, password);
        // 初始化方法2，tenant_id、secret_level、grant_type这三个参数也可以通过setter注入
        // util.init(ip, port, busi_center, app_id, app_secret, public_key, ncc_user, password, tenant_id, secret_level, grant_type);

        // 获取token
        String token = util.getToken();
        System.out.println("token="+token);
        // 请求的OpenAPI接口地址，注意nccloud前面没有"/"
//        String apiuri = "nccloud/api/riaorg/org/dept/queryDeptByCode";
//        util.setApiUrl(apiuri);
//        String requestParam = "{\"code\":[\"BM-RM-01\"],\"version\":\"1\"}";

        String apiuri = "nccloud/api/gl/voucher/list";
        util.setApiUrl(apiuri);
        JSONObject body = new JSONObject();
        body.put("year","2025");

        // 携带token访问接口，获取结果
        String result = util.getAPIRetrun(token, body.toJSONString());
        System.out.println("result="+result);
    }

    public static void main(String[] args) throws Exception {
        YouBIPController obj = new YouBIPController();
        obj.test2();
    }
}
